package com.hksj.Intelligentmanagement.myannotation;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneAnnotationAnally.class)
//@Target 指明这个注解用于在什么地方, 参数是数组类型, 我们一会需要贴字段上,所以只选择了FIELD
//@Retention 声明此注解的生命周期, 可以有SOURCE(源码,编译会丢弃), CLASS(编译,运行时会丢弃), RUNTIME(运行时期也存在)三种类型, 这里选择了生命周期最长的
//@Constraint 这是自定义验证注解最重要的, 它用来表示被贴的这个注解是一个验证注解, 参数中指定了验证器
//message() 指明了验证失败后返回的消息，此方法为@Constraint要求
//groups() 和 payload() 也为@Constraint要求，可默认为空，详细用途可以查看@Constraint文档

public @interface PhoneAnnotation {
    String message() default "参数效验失败!";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
